package com.laiketui.order.api.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
public class OrderDTO implements Serializable {
    /**
     *
     */
    private Long id;

    /**
     * 店铺ID
     */
    private Integer mchId;

    /**
     * 店铺名称
     */
    private String mchName;

    /**
     * 商城id
     */
    private Integer storeId;

    /**
     * 用户id
     */
    private String userId;

    /**
     * 姓名
     */
    private String name;

    /**
     * 联系电话
     */
    private String mobile;

    /**
     * 商品总数量
     */
    private Integer num;

    /**
     * 历史总价(划线价)
     */
    private BigDecimal oldTotalPrice;

    /**
     * 总价(折扣价)
     */
    private BigDecimal totalPrice;

    /**
     * 母单号(多个同时一起支付时母单号为同一个)(支付页面通过此单号查询支付金额等信息)
     */
    private String orderParentNo;

    /**
     * 子单号(店铺单号)
     */
    private String orderNo;

    /**
     * 省
     */
    private String provice;

    /**
     * 市
     */
    private String city;

    /**
     * 县/区
     */
    private String area;

    /**
     * 详细地址
     */
    private String address;

    /**
     * 用户备注
     */
    private String remark;

    /**
     * 商品总体积
     */
    private BigDecimal totalVolume;

    /**
     * 当前使用的折扣率
     */
    private BigDecimal discount;

    /**
     * 订单状态 1待付款 2待确认 3待发货 4可发货 5已发货   0 已取消
     */
    private Integer status;

    /**
     * 支付方式 1 结算通 2 余额支付 3 线下汇款
     */
    private Integer payType;

    /**
     * 期望发货时间
     */
    private Date expectedTime;

    /**
     * 订单过期时间
     */
    private Date expireTime;

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 完成时间
     */
    private Date finishTime;

    /**
     * 下单类型1用户下单2店铺下单3平台下单
     */
    private Integer operationType;

    /**
     * 支付单号唯一标识(上游支付唯一标识)
     */
    private String payOrderNo;

    /**
     * 税费(分)
     */
    private BigDecimal taxation;

    /**
     * 最终支付金额(折扣价+ 税费)
     */
    private BigDecimal payPrice;

    /**
     * 订单类型 1 自营订单 2 pop订单(跟工厂结算)
     */
    private Integer orderType;

    /**
     * 结算金额(分)
     */
    private BigDecimal settlementAmount;

    /**
     * 0 未结算 1可结算 2已结算
     */
    private Integer settlementStatus;

    /**
     * 结算时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date settlementTime;

    /**
     * 发货单号
     */
    private String deliverNo;

    /**
     * 到货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date arriveTime;

    /**
     * 店铺开始确认备货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date mchConfirmTime;

    /**
     * 店铺确认备货状态: 0未确认 1已确认
     */
    private Integer mchConfirmType;

    /**
     * 0 正常 1已删除
     */
    private Integer deleted;

    /**
     * 更新人
     */
    private String updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 下架商品数量(一个商品ID算一个)
     */
    private Integer removeProductNum;

    /**
     * 采购价
     */
    private BigDecimal totalCostPrice;

    /**
     * 总包件数
     */
    private Integer totalBomNum;

    /**
     * 商品种类(一个商品id算一个种类)
     */
    private Integer productNum;

    /**
     * 期望发货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date expectedDeliveryTime;

    /**
     * 实际发货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date realDeliveryTime;

    /**
     * 预计发货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date estimatedDeliveryTime;


    /**
     * 0 未安排发货 1 已安排发货
     */
    private Integer shipmentType;

    /**
     * 安排发货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shipmentTime;

    /**
     * 商品件数
     */
    private Integer skuNum;

    private List<OrderDetailDTO> details;


    /**
     * 质检单图片,多个以逗号分隔
     */
    private String inspectionPhoto;

    /**
     * 质检备注
     */
    private String inspectionRemark;

    /**
     * 0 不加急 1加急
     */
    private Integer urgentType;

    /**
     * 货齐可发 0 否 1 是
     */
    private Integer whollyType;

    private static final long serialVersionUID = 1L;

}
